package pt.iscte.daam.model;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Collection;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Table(name = "Utilizador")
@Entity
public class Arrendatario implements Utilizador, Serializable {

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 4854685871250882107L;

	@Id
	@Column(name = "Utilizador")
	private String utilizador;

	@Column(name = "Email")
	private String email;

	@Column(name = "Password")
	private String password;

	@Column(name = "PrimeiroNome")
	private String primeiroNome;

	@Column(name = "UltimoNome")
	private String ultimoNome;

	@Column(name = "DataNascimento")
	private Calendar dataNascimento;

	@OneToMany(mappedBy = "arrendatario")
	private Collection<ClassificacaoArrendatario> classificacoes;

	@OneToMany(mappedBy = "arrendatario")
	private Collection<Mensagem> mensagens;

	public String getUtilizador() {
		return utilizador;
	}

	public void setUtilizador(String user) {
		this.utilizador = user;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getPrimeiroNome() {
		return primeiroNome;
	}

	public void setPrimeiroNome(String primeiroNome) {
		this.primeiroNome = primeiroNome;
	}

	public String getUltimoNome() {
		return ultimoNome;
	}

	public void setUltimoNome(String ultimoNome) {
		this.ultimoNome = ultimoNome;
	}

	public Calendar getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Calendar dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public void adicionaClassificacao(ClassificacaoArrendatario classificacao) {
		classificacoes.add(classificacao);
		if (classificacao.getUtilizador() != this) {
			classificacao.setUtilizador(this);
		}
	}

	public Collection<ClassificacaoArrendatario> getClassificacoesArrendatario() {
		return classificacoes;
	}

	public void adicionaMensagem(Mensagem mensagem) {
		mensagens.add(mensagem);
		if (mensagem.getArrendatario() != this) {
			mensagem.setArrendatario(this);
		}
	}

	public Collection<Mensagem> getMensagens() {
		return mensagens;
	}
}
